package cn.wuxun.news.controller;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.client.RestTemplate;
import org.springframework.web.multipart.MultipartFile;

import cn.wuxun.common.pojo.News;
import cn.wuxun.common.vo.NewsUIResult;
import cn.wuxun.common.vo.PageResult;
import cn.wuxun.common.vo.SysResult;
import cn.wuxun.news.service.NewsService;

/**
 * 
 * @author 新闻
 *
 */
@RestController
@RequestMapping("/news")
public class NewsController {
	@Autowired
	NewsService newsService;
	
	/**
	 * 
	 * @param ntid
	 * @return
	 * 查看新闻标题
	 * 后台接收  /news/queryNewsPage
	 * 请求方式 Get  提交的参数 ntid
	 * 返回数据 根据查询结果，将News封装到List中
	 * 
	 */
	@RequestMapping("queryNewsTitle")
	public List<News> queryNewsTitleByNtid(String ntid){
		return newsService.queryNewsTitle(ntid);
	}
	
	/**
	 * 
	 * @param page
	 * @param rows
	 * @return
	 * 查看新闻分页页面 (前后台查询)
	 * 后台接收  /news/queryNewsPage 
	 * 请求方式Get
	 * 提交的参数 Integer page , Integer rows,
	 * 返回数据 根据查询结果封装2个数据到NewsUIResult对象中:
			 Integer total:查询的总条数;
			 List<News> rows:查询分页的数据结果;
	 */
	@RequestMapping("queryNewsPage")
	public PageResult queryNewsPage(Integer currentPage, Integer pageSize) {
		PageResult result = newsService.queryNewsPage(currentPage, pageSize);
		return result;
	}
	
	
	 /**
	  * @param nid
	  * @return
	  * 单条新闻查询
	  *	后台接收 /news/queryNewsByNid/{nid}
	  *	请求方式 Get 
	  * 请求参数 路径中携带的参数 String nid 
	  * 返回数据  返回查询的News对象,在ajax中解析使用
	  */
	@RequestMapping("queryNewsByNid/{nid}")
	public News queryNewsByNid(@PathVariable String nid) {
		return newsService.queryNewsByNid(nid);
	}
	
	/**
	 * 
	 * @param ntid
	 * @return
	 * 查看新闻标题
	 * 后台接收  /news/queryNewsPage
	 * 请求方式 Get  提交的参数 ntid 热门的6条
	 * 返回数据 根据查询结果，将News封装到List中
	 * 
	 */
	@RequestMapping("queryNewsByNtidAndHot")
	public List<News> queryNewsByNtidAndHot(String ntid){
		return newsService.queryNewsByNtidAndHot(ntid);
	}
	
	/**
	 * @param news
	 * @return
	 * 添加新闻
	 * 后台接收 news/addNews
	 * 请求方式 Post
	 * 请求参数 News news
	 * 返回数据  返回SysResult对象的json,其结构:
	 * Integer status; 200表示成功,其他表示失败
 	 * String msg;成功返回 “ok”,失败返回其他信息
	 * Object data;根据需求携带其他数据
	 */
	@RequestMapping("/addNews")
	public SysResult addNews(News news) {
		// 使用异常信息来表示成功和失败
		try {
			newsService.addNews(news);
			// 没有异常出现,返回ok
			return SysResult.ok();
		} catch (Exception e) {
			e.printStackTrace();
			return SysResult.build(201, "添加新闻失败", null);
		}
	}

	
	/**
	 * @param nid
	 * @return
	 * 删除新闻
	 * 后台接收 news/delNews
	 * 请求方式 Post
	 * 请求参数 String nid
	 * 返回数据 返回SysResult对象的json
	 */
	@RequestMapping("/delNews")
	public SysResult delNewsById(String nid) {
		// 使用异常信息来表示成功和失败
		try {
			newsService.delNewsById(nid);
			// 没有异常出现,返回ok
			return SysResult.ok();
		} catch (Exception e) {
			e.printStackTrace();
			return SysResult.build(201, "删除新闻失败", null);
		}
	}
	
	/**
	 * @param news
	 * @return
	 * 修改新闻
	 * 后台接收 news/updateNews
	 * 请求方式 Post
	 * 请求参数 News news
	 * 返回数据 返回SysResult对象的json
	 */
	@RequestMapping("updateNews")
	public SysResult updateNews(News news){
		try{
			newsService.updateNews(news);
			//没有异常出现,返回ok
			return SysResult.ok();
		}catch(Exception e){
			e.printStackTrace();
			return SysResult.build(201, e.getMessage(), null);
		}
	}
	
	/**
	  * @param ntid
	  * @return
	  * 新闻查询
	  *	后台接收 /news/queryNewsByNid/{nid}
	  *	请求方式 Get 
	  * 请求参数 路径中携带的参数 String nid 
	  * 返回数据  返回查询的News对象,在ajax中解析使用
	  */
	@RequestMapping("queryNewsByNid")
	public List<News> queryNewsByNtid(@PathVariable String ntid) {
		return newsService.queryNewsByNtid(ntid);
	}

}
